Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут комп’ютерних наук та інформаційних технологій
Кафедра автоматизованих систем управління
Лабораторна робота №2
З курсу:
«Комп’ютерна графіка»
Тема:Основи комп‘ютерної графіки. Робота в просторовій системі координат
Мета: Ознайомлення з основами комп‘ютерної графіки в просторовій системі координат.
ТЕОРЕТИЧНІ ОСНОВИ
Для кращого сприйняття форми об'єкта необхідно мати його зображення в тривимірному просторі. У багатьох випадках наочне представлення про об'єкт можна одержати шляхом виконання операцій обертання і переносу, а також побудови проекцій. Введемо однорідні координати. Точка в тривимірному просторі задається чотиримірним вектором або ж . Перетворення з однорідних координат описується співвідношеннями
де T - деяка матриця перетворення.
Ця матриця може бути представлена у вигляді 4 окремих частин
Матриця 3x3 здійснює лінійне перетворення у виді зміни масштабу, зсуву й обертання. Матриця-рядок 1х3 робить перенос, а матриця-стовпець 3х1 - перетворення в перспективі. Останній скалярний елемент виконує загальну зміну масштабу. Повне перетворення, отримане шляхом впливу на вектор положення матрицею 4x4 і нормалізації перетвореного вектора, будемо називати білінійним перетворенням. Воно забезпечує виконання комплексу операцій зсуву, часткової зміни масштабу, обертання, відображення, переносу, а також зміни масштабу зображення в цілому.
Тривимірна зміна масштабу:
Тривимірний зсув:
Недіагональні елементи верхньої лівої під матриці 3х3 від загальної матриці перетворення розміру 4х4 здійснюють зсуви в трьох вимірах, тобто
.
Відображення в просторі:
При відображенні щодо площини xy змінюється тільки знак координати z. Отже, матриця перетворення для відображення щодо площини xy має вигляд
Відображення одиничного куба щодо площини ху показане на мал.2.7. Для відображення щодо площини уz
а для відображення щодо площини xz
Просторовий перенос:
Тривимірний лінійний перенос зображення задається виразом
Тривимірне обертання навколо довільної осі:
Розглянута процедура полягає в переносі зображення і заданої осі обертання, що забезпечує обертання навколо осі, що проходить через початок координат. Метод тривимірного обертання полягає в лінійному переносі, обертанні навколо початку координат і зворотньому лінійному переносі у вихідне положення. Якщо вісь, навколо якої виконується обертання, проходить через точку А = , то матриця перетворення визначається наступним виразом:
де елементи матриці обертання R розміру 4х4 визначаються в загальному випадку співвідношенням
Текст программного коду:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
StringGrid2: TStringGrid;
Button1: TButton;
RadioGroup1: TRadioGroup;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure koord();
procedure draw_P();
procedure clean();
procedure Button2Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
// procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x0,y0,z0,delta,delta_zx,delta_zy:integer;
//kyb:array[0..7] of array[0..2] of integer;
x:array[0..7]of array[0..3] of double;
a:array[0..3]of array[0..3] of double;
kyb:array[0..7] of array[0..3] of double;
implementation
procedure TForm1.clean();
var i,j:integer;
begin
for i:=0 to 3 do
for j:=0 to 3 do
StringGrid2.Cells[i,j]:=' ';
end;
procedure TForm1.koord();
var delta_p,x1,x2,x3,x4,y1,y2,y3,y4,i,z:integer;
begin
x0:=round(image1.Width/2);
y0:=round((image1.Height)/2);
with...